package cn.xfdzx.android.apps.shop.contract;

import java.util.List;
import java.util.Map;

import cn.xfdzx.android.apps.shop.base.BaseView;
import cn.xfdzx.android.apps.shop.bean.AfterMarketInfoBean;
import cn.xfdzx.android.apps.shop.bean.AfterServiceUpLoadMoreImgBean;
import cn.xfdzx.android.apps.shop.bean.AfterServiceUpLoadSingImgBean;
import cn.xfdzx.android.apps.shop.bean.OrderDetailInfoBeen;
import cn.xfdzx.android.apps.shop.bean.OrderProcessBeen;
import cn.xfdzx.android.apps.shop.bean.ReturnReasonBean;
import io.reactivex.Flowable;
import okhttp3.MultipartBody;


/**
 * @author zf
 * @date 2020/7/14.
 * Description：
 */

public interface AfterServiceContract {
    interface Model {
        Flowable<AfterServiceUpLoadMoreImgBean> uploadMoreImg(List<MultipartBody.Part> files);

        Flowable<AfterServiceUpLoadSingImgBean> uploadSingImg(List<MultipartBody.Part> files);

        Flowable<ReturnReasonBean> getReturnReason();

        Flowable<OrderProcessBeen> getAfterServiceRequest(Map<String, Object> param);

        Flowable<ReturnReasonBean> getAfterServiceCancle(Map<String, Object> param);

        Flowable<OrderProcessBeen> getAfterServiceProgress(Map<String, Object> param);

        Flowable<OrderDetailInfoBeen> getOrderDetail(String orderid);

        Flowable<OrderProcessBeen> getMarketAfterServiceRequest(Map<String, Object> param);

        Flowable<ReturnReasonBean> getMarketAfterServiceCancle(Map<String, Object> param);

        Flowable<AfterMarketInfoBean> getMarketAfterServiceInfo(Map<String, Object> param);

    }

    interface View extends BaseView {
        @Override
        void showLoading();

        @Override
        void hideLoading();

        @Override
        void onError(Throwable throwable);

        void onUploadMoreImgSuccess(AfterServiceUpLoadMoreImgBean bean);

        void onUploadSingImgSuccess(AfterServiceUpLoadSingImgBean bean);

        void getReturnReasonSuccess(ReturnReasonBean bean);

        void getAfterServiceRequestSuccess(OrderProcessBeen bean);

        void getAfterServiceCancleSuccess(ReturnReasonBean bean);

        void getAfterServiceProgressSuccess(OrderProcessBeen bean);

        void getOrderDetailSuccess(OrderDetailInfoBeen bean);

        void getMarketAfterServiceRequestSucces(OrderProcessBeen bean);

        void getMarketAfterServiceCancleSucces(ReturnReasonBean bean);

        void getMarketAfterServiceInfoSucces(AfterMarketInfoBean bean);

    }

    interface Presenter {
        /**
         *多张图片上传
         */
        void uploadMoreImg(List<MultipartBody.Part> files);

        /**
         *单张图片上传
         */
        void uploadSingImg(List<MultipartBody.Part> files);

        void getReturnReason();

        void getAfterServiceRequest(Map<String, Object> param);

        void getAfterServiceCancle(Map<String, Object> param);

        void getAfterServiceProgress(Map<String, Object> param);

        void getOrderDetail(String orderid);

        void getMarketAfterServiceRequest(Map<String, Object> param);

        void getMarketAfterServiceCancle(Map<String, Object> param);

        void getMarketAfterServiceInfo(Map<String, Object> param);

    }
}
